@  0* 0!(!邶  newid()zPNZ uRvVjhD j@6 u (types.dbftype_idtype_id适  newid()/c+Tm屮WzkG -L"D  4` m` Pcalls.dbf `hH i  ^%J UQ TCW%C DTCCf[TCf TTC REPROCESSvGM(%CSETUP Qcontacts!setupF"%Csetupkey_name, %CS(TT>Z F GM( BUTCALIASLCALIASLCIDLCOLDREPROCESS LNOLDAREACONTACTSSETUPVALUE Ta%CC' CS 9 T- %C' %C BUFFERINGx CT Z#CO BULLRETVALPNERROR Ta%CCS @ T-%C53TCCCtcCascadeParentbC6f>%C BUFFERING CT Z#CO BU TCFIELDNAME TCNEWVALUETCCASCADEPARENTLLRETVALPCCASCADEPARENTPNERROR'4 TC+%CgaErrors[lnErrorRows,1]bLCTTTTT T+CCt O,TC,CtTTTT T T  T  T  T  BUTNERRNO TCMESSAGETCCODE TCPROGRAM LNERRORROWSLNXXGAERRORS PCPARENTDBF PNPARENTREC PCPARENTID PCPARENTEXPR PCCHILDDBF PNCHILDREC PCCHILDID PCCHILDEXPR 4TC*%  TCWF TCW%C %Q__riCCCWZAQ__riCCCWZA% TCf?CCWZ T!TCCC>\g5TCCf*CZCf?CZ%C G((% T BUTCTABLETCORDER LCCURWKAREA LCNEWWKAREA LNINUSESPOT PCRICURSORSPNERROR4 %(@GG %C[{~ON ERROR &pcRIolderror. (C*TC*QCC\g%ONGA %OFF G%ON&G % ONCG2  HT C iG( C G( BaU TLSUCCESSLNXXLNSPOT LCWORKAREA PCRIOLDERROR PCRICURSORS PCOLDCOMPAT PCOLDDELE PCOLDEXACT PCOLDTALKPCOLDDBCJ 45TCCf?CZCf*CZBaU TCTABLENAMETCWKAREA PCRICURSORSNewID,RIDELETERIUPDATErierrorriopenriendrireuse 1q4AsRAq"AAA4qAAAA2qA1q1AAA211A1A3qRAAR1AAA3qQaAaAAQA1aAAaA1aA1aAaAq3Rq1-o*,;? OY lv ) FUNCTION NewID(tcAlias) LOCAL lcAlias, ; lcID, ; lcOldReprocess, ; lnOldArea lnOldArea = SELECT() IF PARAMETERS() < 1 lcAlias = UPPER(ALIAS()) ELSE lcAlias = UPPER(tcAlias) ENDIF lcID = "" lcOldReprocess = SET('REPROCESS') *-- Lock until user presses Esc SET REPROCESS TO AUTOMATIC IF !USED("SETUP") USE contacts!setup IN 0 ENDIF SELECT setup IF SEEK(lcAlias, "setup", "key_name") IF RLOCK() lcID = setup.value lcID = lcID + 1 REPLACE setup.value WITH lcID UNLOCK ENDIF ENDIF SELECT (lnOldArea) SET REPROCESS TO lcOldReprocess RETURN lcID ENDFUNC **__RI_HEADER!@ Do NOT REMOVE or MODIFY this line!!!! @!__RI_HEADER** procedure RIDELETE local llRetVal llRetVal=.t. IF (ISRLOCKED() and !deleted()) OR !RLOCK() llRetVal=.F. ELSE IF !deleted() DELETE IF CURSORGETPROP('BUFFERING') > 1 =TABLEUPDATE() ENDIF llRetVal=pnerror=0 ENDIF not already deleted ENDIF UNLOCK RECORD (RECNO()) RETURN llRetVal procedure RIUPDATE lparameters tcFieldName,tcNewValue,tcCascadeParent local llRetVal llRetVal=.t. IF ISRLOCKED() OR !RLOCK() llRetVal=.F. ELSE IF EVAL(tcFieldName)<>tcNewValue PRIVATE pcCascadeParent pcCascadeParent=upper(iif(type("tcCascadeParent")<>"C","",tcCascadeParent)) REPLACE (tcFieldName) WITH tcNewValue IF CURSORGETPROP('BUFFERING') > 1 =TABLEUPDATE() ENDIF llRetVal=pnerror=0 ENDIF values don't already match ENDIF it's locked already, or I was able to lock it UNLOCK RECORD (RECNO()) return llRetVal procedure rierror parameters tnErrNo,tcMessage,tcCode,tcProgram local lnErrorRows,lnXX lnErrorRows=alen(gaErrors,1) if type('gaErrors[lnErrorRows,1]')<>"L" dimension gaErrors[lnErrorRows+1,alen(gaErrors,2)] lnErrorRows=lnErrorRows+1 endif gaErrors[lnErrorRows,1]=tnErrNo gaErrors[lnErrorRows,2]=tcMessage gaErrors[lnErrorRows,3]=tcCode gaErrors[lnErrorRows,4]="" lnXX=1 do while !empty(program(lnXX)) gaErrors[lnErrorRows,4]=gaErrors[lnErrorRows,4]+","+; program(lnXX) lnXX=lnXX+1 enddo gaErrors[lnErrorRows,5]=pcParentDBF gaErrors[lnErrorRows,6]=pnParentRec gaErrors[lnErrorRows,7]=pcParentID gaErrors[lnErrorRows,8]=pcParentExpr gaErrors[lnErrorRows,9]=pcChildDBF gaErrors[lnErrorRows,10]=pnChildRec gaErrors[lnErrorRows,11]=pcChildID gaErrors[lnErrorRows,12]=pcChildExpr return tnErrNo PROCEDURE riopen PARAMETERS tcTable,tcOrder local lcCurWkArea,lcNewWkArea,lnInUseSpot lnInUseSpot=atc(tcTable+"*",pcRIcursors) IF lnInUseSpot=0 lcCurWkArea=select() SELECT 0 lcNewWkArea=select() IF NOT EMPTY(tcOrder) USE (tcTable) AGAIN ORDER (tcOrder) ; ALIAS ("__ri"+LTRIM(STR(SELECT()))) share ELSE USE (tcTable) AGAIN ALIAS ("__ri"+LTRIM(STR(SELECT()))) share ENDIF if pnerror=0 pcRIcursors=pcRIcursors+upper(tcTable)+"?"+STR(SELECT(),5) else lcNewWkArea=0 endif something bad happened while attempting to open the file ELSE lcNewWkArea=val(substr(pcRIcursors,lnInUseSpot+len(tcTable)+1,5)) pcRIcursors = strtran(pcRIcursors,upper(tcTable)+"*"+str(lcNewWkArea,5),; upper(tcTable)+"?"+str(lcNewWkArea,5)) IF NOT EMPTY(tcOrder) SET ORDER TO (tcOrder) IN (lcNewWkArea) ENDIF sent an order if pnerror<>0 lcNewWkArea=0 endif something bad happened while setting order ENDIF RETURN (lcNewWkArea) PROCEDURE riend PARAMETERS tlSuccess local lnXX,lnSpot,lcWorkArea IF tlSuccess END TRANSACTION ELSE SET DELETED OFF ROLLBACK SET DELETED ON ENDIF IF EMPTY(pcRIolderror) ON ERROR ELSE ON ERROR &pcRIolderror. ENDIF FOR lnXX=1 TO occurs("*",pcRIcursors) lnSpot=atc("*",pcRIcursors,lnXX)+1 USE IN (VAL(substr(pcRIcursors,lnSpot,5))) ENDFOR IF pcOldCompat = "ON" SET COMPATIBLE ON ENDIF IF pcOldDele="OFF" SET DELETED OFF ENDIF IF pcOldExact="ON" SET EXACT ON ENDIF IF pcOldTalk="ON" SET TALK ON ENDIF do case case empty(pcOldDBC) set data to case pcOldDBC<>DBC() set data to (pcOldDBC) endcase RETURN .T. PROCEDURE rireuse * rireuse.prg PARAMETERS tcTableName,tcWkArea pcRIcursors = strtran(pcRIcursors,upper(tcTableName)+"?"+str(tcWkArea,5),; upper(tcTableName)+"*"+str(tcWkArea,5)) RETURN .t. **__RI_FOOTER!@ Do NOT REMOVE or MODIFY this line!!!! @!__RI_FOOTER** + type_id typestype_id newid()"<$<"contacts.dbfK`,,d``z4`8` A@`D`,)setup.dbfkey_name}` `D (FUNCTION NewID(tcAlias) LOCAL lcAlias, ; lcID, ; lcOldReprocess, ; lnOldArea lnOldArea = SELECT() IF PARAMETERS() < 1 lcAlias = UPPER(ALIAS()) ELSE lcAlias = UPPER(tcAlias) ENDIF lcID = "" lcOldReprocess = SET('REPROCESS') *-- Lock until user presses Esc SET REPROCESS TO AUTOMATIC IF !USED("SETUP") USE contacts!setup IN 0 ENDIF SELECT setup IF RECCOUNT()=0 INSERT INTO setup VALUE ("CALLS",0) INSERT INTO setup VALUE ("CONTACTS",0) INSERT INTO setup VALUE ("TYPES",0) ENDIF IF SEEK(lcAlias, "setup", "key_name") IF RLOCK() lcID = setup.value lcID = lcID + 1 REPLACE setup.value WITH lcID UNLOCK ENDIF ENDIF SELECT (lnOldArea) SET REPROCESS TO lcOldReprocess RETURN lcID ENDFUNC **__RI_HEADER!@ Do NOT REMOVE or MODIFY this line!!!! @!__RI_HEADER** procedure RIDELETE local llRetVal llRetVal=.t. IF (ISRLOCKED() and !deleted()) OR !RLOCK() llRetVal=.F. ELSE IF !deleted() DELETE IF CURSORGETPROP('BUFFERING') > 1 =TABLEUPDATE() ENDIF llRetVal=pnerror=0 ENDIF not already deleted ENDIF UNLOCK RECORD (RECNO()) RETURN llRetVal procedure RIUPDATE lparameters tcFieldName,tcNewValue,tcCascadeParent local llRetVal llRetVal=.t. IF ISRLOCKED() OR !RLOCK() llRetVal=.F. ELSE IF EVAL(tcFieldName)<>tcNewValue PRIVATE pcCascadeParent pcCascadeParent=upper(iif(type("tcCascadeParent")<>"C","",tcCascadeParent)) REPLACE (tcFieldName) WITH tcNewValue IF CURSORGETPROP('BUFFERING') > 1 =TABLEUPDATE() ENDIF llRetVal=pnerror=0 ENDIF values don't already match ENDIF it's locked already, or I was able to lock it UNLOCK RECORD (RECNO()) return llRetVal procedure rierror parameters tnErrNo,tcMessage,tcCode,tcProgram local lnErrorRows,lnXX lnErrorRows=alen(gaErrors,1) if type('gaErrors[lnErrorRows,1]')<>"L" dimension gaErrors[lnErrorRows+1,alen(gaErrors,2)] lnErrorRows=lnErrorRows+1 endif gaErrors[lnErrorRows,1]=tnErrNo gaErrors[lnErrorRows,2]=tcMessage gaErrors[lnErrorRows,3]=tcCode gaErrors[lnErrorRows,4]="" lnXX=1 do while !empty(program(lnXX)) gaErrors[lnErrorRows,4]=gaErrors[lnErrorRows,4]+","+; program(lnXX) lnXX=lnXX+1 enddo gaErrors[lnErrorRows,5]=pcParentDBF gaErrors[lnErrorRows,6]=pnParentRec gaErrors[lnErrorRows,7]=pcParentID gaErrors[lnErrorRows,8]=pcParentExpr gaErrors[lnErrorRows,9]=pcChildDBF gaErrors[lnErrorRows,10]=pnChildRec gaErrors[lnErrorRows,11]=pcChildID gaErrors[lnErrorRows,12]=pcChildExpr return tnErrNo PROCEDURE riopen PARAMETERS tcTable,tcOrder local lcCurWkArea,lcNewWkArea,lnInUseSpot lnInUseSpot=atc(tcTable+"*",pcRIcursors) IF lnInUseSpot=0 lcCurWkArea=select() SELECT 0 lcNewWkArea=select() IF NOT EMPTY(tcOrder) USE (tcTable) AGAIN ORDER (tcOrder) ; ALIAS ("__ri"+LTRIM(STR(SELECT()))) share ELSE USE (tcTable) AGAIN ALIAS ("__ri"+LTRIM(STR(SELECT()))) share ENDIF if pnerror=0 pcRIcursors=pcRIcursors+upper(tcTable)+"?"+STR(SELECT(),5) else lcNewWkArea=0 endif something bad happened while attempting to open the file ELSE lcNewWkArea=val(substr(pcRIcursors,lnInUseSpot+len(tcTable)+1,5)) pcRIcursors = strtran(pcRIcursors,upper(tcTable)+"*"+str(lcNewWkArea,5),; upper(tcTable)+"?"+str(lcNewWkArea,5)) IF NOT EMPTY(tcOrder) SET ORDER TO (tcOrder) IN (lcNewWkArea) ENDIF sent an order if pnerror<>0 lcNewWkArea=0 endif something bad happened while setting order ENDIF RETURN (lcNewWkArea) PROCEDURE riend PARAMETERS tlSuccess local lnXX,lnSpot,lcWorkArea IF tlSuccess END TRANSACTION ELSE SET DELETED OFF ROLLBACK SET DELETED ON ENDIF IF EMPTY(pcRIolderror) ON ERROR ELSE ON ERROR &pcRIolderror. ENDIF FOR lnXX=1 TO occurs("*",pcRIcursors) lnSpot=atc("*",pcRIcursors,lnXX)+1 USE IN (VAL(substr(pcRIcursors,lnSpot,5))) ENDFOR IF pcOldCompat = "ON" SET COMPATIBLE ON ENDIF IF pcOldDele="OFF" SET DELETED OFF ENDIF IF pcOldExact="ON" SET EXACT ON ENDIF IF pcOldTalk="ON" SET TALK ON ENDIF do case case empty(pcOldDBC) set data to case pcOldDBC<>DBC() set data to (pcOldDBC) endcase RETURN .T. PROCEDURE rireuse * rireuse.prg PARAMETERS tcTableName,tcWkArea pcRIcursors = strtran(pcRIcursors,upper(tcTableName)+"?"+str(tcWkArea,5),; upper(tcTableName)+"*"+str(tcWkArea,5)) RETURN .t. **__RI_FOOTER!@ Do NOT REMOVE or MODIFY this line!!!! @!__RI_FOOTER** A ((@r%  5 U TCW%C DTCCf[TCf TTC REPROCESSvGM(%CSETUP Qcontacts!setupF%CN8 rsetupCALLS#rsetupCONTACTS rsetupTYPES"%Csetupkey_name %CSTT>Z F GM( BUTCALIASLCALIASLCIDLCOLDREPROCESS LNOLDAREACONTACTSSETUPVALUE Ta%CC' CS 9 T- %C' %C BUFFERINGx CT Z#CO BULLRETVALPNERROR Ta%CCS @ T-%C53TCCCtcCascadeParentbC6f>%C BUFFERING CT Z#CO BU TCFIELDNAME TCNEWVALUETCCASCADEPARENTLLRETVALPCCASCADEPARENTPNERROR'4 TC+%CgaErrors[lnErrorRows,1]bLCTTTTT T+CCt O,TC,CtTTTT T T  T  T  T  BUTNERRNO TCMESSAGETCCODE TCPROGRAM LNERRORROWSLNXXGAERRORS PCPARENTDBF PNPARENTREC PCPARENTID PCPARENTEXPR PCCHILDDBF PNCHILDREC PCCHILDID PCCHILDEXPR 4TC*%  TCWF TCW%C %Q__riCCCWZAQ__riCCCWZA% TCf?CCWZ T!TCCC>\g5TCCf*CZCf?CZ%C G((% T BUTCTABLETCORDER LCCURWKAREA LCNEWWKAREA LNINUSESPOT PCRICURSORSPNERROR4 %(@GG %C[{~ON ERROR &pcRIolderror. (C*TC*QCC\g%ONGA %OFF G%ON&G % ONCG2  HT C iG( C G( BaU TLSUCCESSLNXXLNSPOT LCWORKAREA PCRIOLDERROR PCRICURSORS PCOLDCOMPAT PCOLDDELE PCOLDEXACT PCOLDTALKPCOLDDBCJ 45TCCf?CZCf*CZBaU TCTABLENAMETCWKAREA PCRICURSORSNewID,RIDELETECRIUPDATErierrorUriopen(riend> rireuseO 1q4AsRAq1A"AAA4qAAAA2qA1q1AAA211A1A3qRAAR1AAA3qQaAaAAQA1aAAaA1aA1aAaAq3Rq1V!/1T@Di T^ sq{.&)(